package com.gomcarter.frameworks.base.annotation;

import com.gomcarter.frameworks.base.json.JsonObject;

import java.lang.annotation.*;

/**
 * Created by daibing on 2024/7/6.
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface JsonWrapper {

    /**
     * 指定包装类，使用注意：
     * 1、在方法上加注解：指定包装类属于小众场景，简化逻辑仅支持方法注解。
     * 2、指定自定义外部包装类：要求包装类提供一个入参 JsonObject 的构造函数。
     * 3、指定精简外部包装类：{@link com.gomcarter.frameworks.base.json.SimpleJsonObject} 将返回精简外部包装字段。
     * 4、指定不使用外部包装类：{@link com.gomcarter.frameworks.base.json.NoWrapObject} 将直接返回内部业务数据对象。
     */
    Class<?> value() default JsonObject.class;

    /**
     * ture:返回详细的异常信息,
     * false:返回特定的默认信息,例如请求失败
     */
    boolean responseCause() default false;
}